接着第5章往下看,前面讲C的章节,感觉作者描述的很清晰易懂,不知道后面讲ObjC的时候怎么样,希望能延续这样的风格。
Chapter 6 Numbers
生词1
2
3Codify-编程法典 Literal-文字的 Explicit-明确的 Planet-星球 Prefix-加前缀
Precedence-优先于 Modulus-模数 Quotient-系数,商 Denominator-分母 Trigonometry-三角法
Exponentiation-幂 Cube-立方 Radian-弧度 Dictate-命令 Iterate-迭代,重复
- 介绍计算机内各种类型数的存储方式,强制类型转换等;
Chapter 7 Loops
生词1
居然没有
- 介绍循环的基本只是,没什么好记录的,除了这个:
Notice the trailing semicolon. That’s because unlike the other loops, a do-whileloop is actually one
long statement:
do { something } while ( something else stays true );
没人说过为什么do while最后要有一个分号。。。也没想过这个问题;
Chapter 8 Addresses and Pointers
生词1
Vast-广阔的,巨大的 meadow-牧场 stuff-塞满,东西
- 讲到寻址问题和CPU位数的关系
Whenpeople talk about a 32-bit CPU or a 64-bit CPU, they are usually talking about how big the address is.
A 64-bit CPU can deal with much, much more memory than a 32-bit CPU.
我觉得概念有点模糊,去查找相关资料:
目前不少人可能对于CPU的寻址概念有些模糊,认为CPU的寻址范围与其平常概念上的位宽直接联系,即所谓的32位CPU寻址范围为2^32,64位的则是2^64。其实这是一个错误的概念,对于CPU来说,这个的位宽一般是指是其数据总线位宽,和寻址能力并无直接联系。至于一个CPU的寻址位宽是多少则要看其具体的设计。
这个博客讲的比较清楚了,其实原文中作者的memory并不是特指的内存;
- %p这个没用过哈,函数名是指向函数开始运行的地址说的很精辟;
- %zu用于size_t tpye在printf中的notation;
float* a
和float *a
,Stylish的程序员都是用第二种;
Chapter 9 Pass By Reference
生词1
Fraction-分数,部分,小数 stash-存放 Biz-商业 Dead drop-情报秘密传递点 Polar-两极的,极面
- 主要讲了如果函数需要返回两个及以上的值,用指针作为参数传递的方法;
Chapter 10 Structs
生词1
Obese-肥胖的 Imprecise-不精确的
- 结构体的基本知识
Chapter 11 The Heap
生词1
Vowel-元音 Region-地区 Assorted-分等级的,各种各样的 Arithmetic-算法
我想了Heap和Stack的区别,也查了资料;我在想,如果是递归调用中使用alloc申请heap中的内存,那么Stack中又会如何存frame呢?
答案是这样: 因为调用alloc申请内存都是赋给一个指针;而这指针变量是直接定义的,也就是stack里的,那么stack里的frame只保存这个指针变量就好了,
而Heap里的值是不归stack管的;递归返回的时候,仍旧通过这个指针去找heap里面的内存值;而每次调用alloc的前面,都会声明一次指针变量,这些指针变量虽然名字
相同,但是却是由stack管理的不同的变量,就像Chapter 5里面的Recursion;Notice the operator ->. p->weightInKilossays, “Dereference the pointer p to the structure and get me
the member called weightInKilos. ”